#ifndef _EVENT_H_
#define _EVENT_H_

#include "glo_def.h"
#include "eventtype.h"
#include <string>

class iEvent
{
public:
	iEvent(u32 eid, u32 sn);
	virtual ~iEvent();

	// 用来打印事件信息
	virtual std::ostream& dump(std::ostream& out)const { return out; }
	virtual i32 FIXED_BYTE_SIZE() { return 0; }

	// 生成序列号  serial number
	u32 generateSeqNo();
	u32 get_eid()const { return eid_; }
	u32 get_sn()const { return sn_; }

	void set_args(void* agrs) { agrs_ = agrs; }
	void* get_args() { return  agrs_; }
	void set_eid(u32 eid) { eid_ = eid; }

	virtual bool SerializeToArray(char* buf, int len) { return true; }

private:
	u32 eid_;    // 事件id 
	u32 sn_;    // 序列号
	void* agrs_;   // 外部传入的参数
};

#endif
